package com.adhere.system.pojo.vo;

import com.adhere.system.pojo.RbacRole;
import com.adhere.system.pojo.RbacPrivilege;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 用户基本信息加上用户角色信息
 */
@Data
public class UserDetailVo {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "id")
    @TableId(value = "id", type = IdType.AUTO)
    @JsonIgnore
    private Long id;

    @ApiModelProperty(value = "用户编码（可以考虑根据login_name进行Hash码，要具备不承载信息特性），用于替代主键id，防止被窥测用户量级")
    private String code;

    @ApiModelProperty(value = "可用于登录的名称")
    private String loginName;

    @ApiModelProperty(value = "昵称（不可用于登录）")
    private String nickname;

    @ApiModelProperty(value = "密码（经过BCrypt 哈希后的密文）")
    private String password;

    @ApiModelProperty(value = "移动电话")
    private String msisdn;

    @ApiModelProperty(value = "电子邮箱")
    private String email;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "账号创建时间")
    private LocalDateTime createTime;

    @ApiModelProperty(value = "账号是否已经锁定：1 表示锁定   0 表示未锁定")
    private Boolean isLocked;

    @ApiModelProperty(value = "账号是否已被删除：1 表示删除   0 表示未删除")
    private Boolean isDeleted;

    // 角色列表
    List<RbacRole> RoleList;

    // 权限列表
    List<RbacPrivilege> privilegeList;

}
